package proxy;

import java.lang.reflect.Type;
import java.util.Map;

/**
 * interface IRequestProxy
 * 请求代理借口。
 * 实现该借口的类能够按照定义实现远程或本地的服务请求功能。
 *
 * @author alex
 * @version 0.1
 * @since 2017 12/13/17
 */
public interface IRequestProxy {

    /**
     * 发起get请求。
     *
     * @param type   返回值类型
     * @param url    请求地址。
     * @param params 请求参数列表。
     * @param <T>    返回的结果。
     * @return T类型的值。
     */
    <T> T get(String url, Map<Object, ?> params, Map<Object, ?> urlParams, Type type);

    /**
     * 发起post请求。
     *
     * @param url    请求地址。
     * @param type   返回值泛型类型。
     * @param params 请求参数列表。
     * @param <T>    返回的结果。
     * @return T类型的值。
     */
    <T> T post(String url, Map<Object, ?> params, Map<Object, ?> urlParams, Type type);

    /**
     * 发起del请求。
     *
     * @param url    请求地址。
     * @param params 请求参数列表。
     * @return T类型的值。
     */
    void del(String url, Map<Object, ?> params);

}
